※ 본 문서는 PC 환경에 최적화되어있습니다.

1 아파트 매매가는 무엇으로 설명할 수 있을까? (파주시)

한 지역에서 아파트 매매가는 어떤 변수로 설명할 수 있을까? 얼마나 오래됐는지? 층수? 평수? 시가지화 정도? 이 변수들로 아파트 매매가를 설명해보고자 한다.

이 분석에 쓰일 자료는 국토교통부 실거래가 공개시스템에서 제공하는 경기도 파주시 2020년 4월 아파트 매매 거래 목록을 내려받아 활용했다.

1.1 library 및 데이터

1.1.2 데이터 불러오고 정제하기

dong_num: categorical variable, “동”, “리” area: 아파트 면적 price: 아파트 가격(매매가, 단위: 천 원) floor: 아파트 층수 year: 아파트 건축 연도

층수, 건축 연도, 집 넓이와 마지막으로 아파트가 시가지에 위치해 있는지 여부는 모두 아파트의 가격과 연관성이 있는지 확인해볼 가치가 있는 변수다. 이에 원 데이터에서 위의 다섯개 변수를 가져왔고, 상관성 분석을 통해 변수 간 상관성을 확인해 다중회귀분석을 시행할 것이다.

원데이터에 있으나 분석에 사용하지 않은 변수는 주소(번지, 동명, 아파트명, 도로명주소)과 계약일이다.

결측치가 있는 행은 제거했으며, 아파트 거래가 아닌 것으로 확인된 두 개의 influential point 역시 잘못된 데이터이므로 배제하고 분석을 진행한다.(상세한 내용 참고: 뒷부분 influential point, influential.test 부분에서 결정)

1.1.3 데이터 확인하기

## tibble [318 x 7] (S3: tbl_df/tbl/data.frame)
##  $ dong    : Factor w/ 2 levels "동","리": 1 1 1 1 1 1 1 1 1 1 ...
##  $ area    : num [1:318] 84.8 84.8 75 59.9 85 ...
##  $ price   : num [1:318] 14000 14800 14000 15000 18750 ...
##  $ floor   : num [1:318] 1 3 12 2 7 17 17 18 18 2 ...
##  $ year    : num [1:318] 2000 2000 2001 2000 2000 ...
##  $ dong_num: num [1:318] 1 1 1 1 1 1 1 1 1 1 ...
##  $ logprice: num [1:318] 13.8 13.9 13.8 13.9 14.2 ...

종속변수로 다룰 매매가다. 매매가는 정규분포와 비교해 좌측으로 치우쳐진 분포를 보여준다. 모든 변수의 분포를 확인하면 다음과 같다.

또한 더미변수인 동/리에 따라 year, floor, area 별 price분포도 달라진다는 것을 확인할 수 있다. 특히, 셋 모두 동 더미변수가 일정할 때의 price를 종속변수로 두는 추세선들이 평행하지 않아 dong 더미변수와의 interaction이 유의한지 확인해볼 필요가 있으며, 특히 year변수 X축에 둘 때 추세선이 inordinal하게 엇갈려 interaction effect이 있는지, 즉 아파트가 동에 위치하는지 리에 위치하는지에 따라 매매가와 아파트 연식 간의 연관성이 다르게 나타나지 않는지 주의를 기울일 필요가 있다.

dong_num을 각각 0과 1로 일정하게 둘 때, 각각의 x변수 year, floor, area에 대해 추세선이 다르게 나타나는 것을 scatterplot에서 확인할 수 있다. area의 경우 특정 값에 샘플이 몰려있는 점을 유의해야 할 것으로 보인다.

세 변수를 모두 predictor로 하는 회귀분석을 진행할 예정이다.

1.1.4 소결

year 건축 연도가 최신일수록, floor 층수가 높을수록, area 면적이 넓을수록, dong 리보다는 동일 때 price 더 높은 가격에 매매가 이뤄진다.

floor 변수의 경우 매우 고르게 분포해있는데 반해, area의 경우 특정 면적의 표본 수가 컸는데, 이는 아파트 면적과 형태가 어느정도 정형화돼 있기 때문일 것이다.

dong 동에서의 거래량이 리에서의 거래 건수보다 훨씬 많고, 특히 동에서 리에서보다 아파트 건축 연수에 따른 아파트 매매가 차이가 컸다. 이는 아파트 자체가 동에 더 많고, 거래량도 더 많으며, 택지 개발, 신도시 개발로 동 전환을 한 지역이 도시 내에 분포해있기 때문 등에서 이유를 찾을 수 있다.

1.2 상관분석 및 아노바

1.2.1 Correlation Matrix

##              price      year      floor        area    dong_num
## price    1.0000000 0.7793920 0.27268511  0.43464821  0.31383179
## year     0.7793920 1.0000000 0.18101250  0.10727676  0.15915674
## floor    0.2726851 0.1810125 1.00000000  0.01645352  0.09266305
## area     0.4346482 0.1072768 0.01645352  1.00000000 -0.06924280
## dong_num 0.3138318 0.1591567 0.09266305 -0.06924280  1.00000000
##             log2.price.      year      floor        area    dong_num
## log2.price.   1.0000000 0.7958411 0.23125275  0.47601586  0.34405680
## year          0.7958411 1.0000000 0.18101250  0.10727676  0.15915674
## floor         0.2312527 0.1810125 1.00000000  0.01645352  0.09266305
## area          0.4760159 0.1072768 0.01645352  1.00000000 -0.06924280
## dong_num      0.3440568 0.1591567 0.09266305 -0.06924280  1.00000000
##              price       year       floor       area    dong_num
## price    1.0000000  0.8254002  0.25810025  0.6356138  0.43176983
## year     0.8254002  1.0000000 -0.12160655 -0.4732295 -0.27786336
## floor    0.2581002 -0.1216066  1.00000000 -0.1619878 -0.05414133
## area     0.6356138 -0.4732295 -0.16198779  1.0000000 -0.33566780
## dong_num 0.4317698 -0.2778634 -0.05414133 -0.3356678  1.00000000
price year floor area dong_num
price 1 0.779 0.273 0.435 0.314
year 0.779 1 0.181 0.107 0.159
floor 0.273 0.181 1 0.016 0.093
area 0.435 0.107 0.016 1 -0.069
dong_num 0.314 0.159 0.093 -0.069 1
price year floor area dong_num
price 0 0.00000 0 0
year 0 0.001 0.056 0.004
floor 0.00000 0.001 0.770 0.099
area 0 0.056 0.770 0.218
dong_num 0 0.004 0.099 0.218

price변수와 year floor area dong_num은 모두 상관계수가 있고, 모두 유의해 다중회귀분석을 진행해보기로 한다.

partial correlation matrix의 dong_num과 유의수준 0.05하에서 유의한 year는 .16의 상관계수가 있는데, 앞서 언급한 대로 파주시의 2000년대 시가지 개발 및 택지 개발, 2010년대초 신도시 개발과 연관있는 것으로 판단된다.

때문에 interaction 항에도 주목할 필요가 있다.

1.2.2 ANOVA

RQ: 주택 가격은 동/리 여부에 따라 다를까?

Is price of an appartment differ across location(city or not)?

H0: 동/리 여부와 주택 가격은 상관 없다. H1: 동/리 여부와 주택 가격은 상관 없지 않다.

##   total.mean total.var
## 1   27886.16 117725817
##   표본평균.dong 표본평균.price 표본분산.dong 표본분산.price 표본수.dong
## 1            동       29337.17            동      117738053          동
## 2            리       19920.41            리       43535721          리
##   표본수.price
## 1          269
## 2           49
##              Df    Sum Sq   Mean Sq F value   Pr(>F)    
## dong          1 3.676e+09 3.676e+09   34.52 1.07e-08 ***
## Residuals   316 3.364e+10 1.065e+08                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

1.2.2.1 ANOVA 결과

ANOVA 분석결과 유의 수준 0.05 하에서 p-value는 매우 작아 유의하다. H0은 기각되며, 전체 집단과 dong_num = 0 또는 dong_num = 1인 집단은 다른 집단이라고 할 수 있다.

1.3 Model: 회귀분석

1.3.1 RQ

Research Question(Question of Interest): 아파트 건축 연도, 아파트의 넓이와 층수, 도시에 위치하는지 여부는 아파트 가격 변화를 설명할 수 있는가?

Is price of house associated with year built, area(m2), floor, location(city or not) of housing?

\(\hat{Price} = \beta_0 + \beta_1Year + \beta_2Area + \beta_3Floor + \beta_4dong\)

설명변수: year area floor, dong_num 종속변수: price

1.3.2 변수별 단순선형회귀분석

예측변수: dong 종속변수: logprice

## 
## Call:
## lm(formula = logprice ~ dong, data = ht)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.89572 -0.31591  0.03201  0.35394  1.19044 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.74113    0.03361 438.617  < 2e-16 ***
## dong리      -0.55769    0.08562  -6.514 2.89e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5512 on 316 degrees of freedom
## Multiple R-squared:  0.1184, Adjusted R-squared:  0.1156 
## F-statistic: 42.43 on 1 and 316 DF,  p-value: 2.886e-10

0.05 유의수준에서 dong은 logPrice를 유의하게 설명한다. 다만 logPrice에 대해 11.56%의 설명력을 가져 설명력은 그리 높지 않다.

예측변수: year area floor 종속변수: logprice

## 
## Call:
## lm(formula = logprice ~ year, data = ht)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.25117 -0.23838  0.04659  0.24042  1.05042 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.457e+02  6.863e+00  -21.23   <2e-16 ***
## year         7.993e-02  3.421e-03   23.36   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3555 on 316 degrees of freedom
## Multiple R-squared:  0.6334, Adjusted R-squared:  0.6322 
## F-statistic: 545.9 on 1 and 316 DF,  p-value: < 2.2e-16

새 아파트: 0.05 유의수준에서 year은 logPrice를 유의하게 설명한다. 또한 logPrice에 대해 63.2%의 설명력을 가진다.

## 
## Call:
## lm(formula = logprice ~ area, data = ht)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.0452 -0.2791 -0.0226  0.3531  1.2813 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.625855   0.110827 122.947   <2e-16 ***
## area         0.011865   0.001233   9.622   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5163 on 316 degrees of freedom
## Multiple R-squared:  0.2266, Adjusted R-squared:  0.2241 
## F-statistic: 92.58 on 1 and 316 DF,  p-value: < 2.2e-16

넓은 아파트: 0.05 유의수준에서 area은 logPrice를 유의하게 설명한다. 또한 logPrice에 대해 22.41%의 설명력을 가진다.

## 
## Call:
## lm(formula = logprice ~ floor, data = ht)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.25015 -0.34208  0.05709  0.42448  1.12483 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.426228   0.062946 229.186  < 2e-16 ***
## floor        0.022328   0.005284   4.225 3.12e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5711 on 316 degrees of freedom
## Multiple R-squared:  0.05348,    Adjusted R-squared:  0.05048 
## F-statistic: 17.85 on 1 and 316 DF,  p-value: 3.125e-05

높은 층의 아파트: 0.05 유의수준에서 floor은 logPrice를 유의하게 설명한다. 또한 logPrice에 대해 5.05%의 설명력을 가져 이번 분석에서 다룰 설명변수 중 가장 설명력이 낮다. 그러나 coefficient가 유의하기 때문에 배제하지 않고 다중선형회귀분석을 진행한다.

1.3.2.1 단순회귀분석 소결

각 설명변수 별 단순회귀분석 결과 비교
Dependent variable:
logprice
새 아파트인가 동에 있나 넓은 집인가 높은 층인가
(1) (2) (3) (4)
year 0.080***
(0.003)
dong리 -0.558***
(0.086)
area 0.012***
(0.001)
floor 0.022***
(0.005)
Constant -145.690*** 14.741*** 13.626*** 14.426***
(6.863) (0.034) (0.111) (0.063)
Observations 318 318 318 318
R2 0.633 0.118 0.227 0.053
Adjusted R2 0.632 0.116 0.224 0.050
Residual Std. Error (df = 316) 0.355 0.551 0.516 0.571
F Statistic (df = 1; 316) 545.888*** 42.429*** 92.581*** 17.854***
Note: p<0.1; p<0.05; p<0.01

단순회귀분석을 시행했을 때 각 변수는 모두 유의한 \(\beta\) (회귀 계수)를 보여준다.(유의수준 \(\alpha = 0.05\)) 그러나 floor를 설명변수로 하는 모델의 경우 \(R^2\) 값이 0.048로 설명력이 상당히 낮음을 알 수 있다.


1.4 다중회귀분석: Main effect model based

이제 다중회귀분석을 통해 한꺼번에 Price를 어떻게 설명하는지 확인한다.

다른 설명변수의 값은 현재 설명하는 설명변수의 coefficient에 영향을 미치지 않는다는 가정의 Main effect model 기반의 다중회귀분석이다.

1.4.1 RQ

Research Question(Question of Interest): 동/리 여부에 따른 아파트 건축 연도, 아파트의 넓이와 층수 아파트 가격 변화를 설명할 수 있는가?

예측변수: year area dong_num floor 종속변수: logprice

H0: \(\beta_1=\beta_2=\beta_3=\beta_4=0\) H1: \(\beta_1,\beta_2,\beta_3,\beta_4\) is not all \(0\)

회귀 모델:

\(log\hat{Price} = \beta_0 + \beta_1Year + \beta_2Area + \beta_3Floor + \beta_4dong\)

동일 때 \(dong = 1\) \(log\hat{Price} = (\beta_0 + \beta_4) + \beta_1Year + \beta_2Area + \beta_3Floor\)

리일 때 \(dong = 0\) \(log\hat{Price} = \beta_0 + \beta_1Year + \beta_2Area + \beta_3Floor\)

설명변수: year area floor, dong_num 종속변수: price

1.4.2 분석

## 
## Call:
## lm(formula = logprice ~ year + area + floor + dong, data = ht)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.69759 -0.12131  0.00674  0.13050  0.53685 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.267e+02  4.426e+00 -28.623  < 2e-16 ***
## year         6.999e-02  2.210e-03  31.671  < 2e-16 ***
## area         1.041e-02  5.351e-04  19.456  < 2e-16 ***
## floor        7.201e-03  2.092e-03   3.443 0.000655 ***
## dong리      -4.136e-01  3.512e-02 -11.776  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2219 on 313 degrees of freedom
## Multiple R-squared:  0.8585, Adjusted R-squared:  0.8567 
## F-statistic: 474.8 on 4 and 313 DF,  p-value: < 2.2e-16

Dong의 동, 리 여부에 따라서도 Coefficient를 계산한다.

##          b0         b1         b2         b3         b4
## 1 -126.6736 0.06999171 0.01041114 0.00720134 -0.4135748
##     b0...b4         b1         b2         b3
## 1 -127.0872 0.06999171 0.01041114 0.00720134
##          b0         b1         b2         b3
## 1 -126.6736 0.06999171 0.01041114 0.00720134

1.4.3 회귀 분석 결과

\(log\hat{Price} = -126.674+ 0.070Year + 0.010Area + 0.007Floor - 0.414dong\)

모든 설명변수는 매우 유의한 p-value 값을 가지며,(유의수준 \(\alpha = 0.05\)) H0은 기각된다. 즉 모든 beta는 0이 아니다.

위의 다중회귀모형은 Adjusted \(R^2\) 역시 .857로, 약 85.7%의 설명력을 갖는다.

더 상세하게 보면, 다른 변수가 통제된 상태에서, Year 한 단위 변화는(1년 더 최근에 지어졌을수록) Price 약 7.25%의 변화에 정방향으로 영향을 받으며, Area \(1m^2\) 증가할 때마다, 또 Floor 한 층 높아질 때마다 각각 Price는 약 1.01%, 0.70%의 변화에 정방향으로 영향이 있고, dong 한 단위 변화(리)는 Price의 -51.29% 변화에 영향이 있다.

categorical 변수에 따른 sector별 분석도 가능하다.

동일 때 \(Dong = 1\) \(log\hat{Price} = -127.087 + 0.070Year + 0.010Area + 0.007Floor\)

리일 때 \(dong = 0\) \(log\hat{Price} = -126.673 + 0.067Year + 0.012Area + 0.008Floor\)

두 섹터 모두 Main effect model의 가정에 따라 다른 변수가 통제된 상태에서 Year Area Floor 각각 한 단위 증가할 때, Price의 변화율은 서로 동일하고, 섹터를 나누지 않을 때와도 일정하다.

그러나 \(\beta0\)에서 차이점을 보인다.

결론의 영향이 있다, 영향을 받다는 association을 설명하는 것일 뿐, 인과관계의 의미를 내포하지 않는다.

1.4.4 시각화

par(mfrow = c(1,3))
betas.year <- coef(lm(logprice~year+dong, data = ht))

intercept.bc <- betas.year[1]
slope.year <- betas.year[2]
intercept.dong <- betas.year[1] + betas.year[3]
intercept.li   <- betas.year[1]

plot(logprice ~ year, data=ht,
            pch=20,
            xlab="year",
            ylab="log2Price", 
            main="House Price by year\n(Main-Effect Model)")

curve(intercept.dong + slope.year*x, col="aquamarine3", add=TRUE)
curve(intercept.li+ slope.year*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2, 
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))

betas.area <- coef(lm(logprice~area+dong, data = ht))

intercept.bc <- betas.area[1]
slope.area <- betas.area[2]
intercept.dong <- betas.area[1] + betas.area[3]
intercept.li   <- betas.area[1]

plot(logprice ~ area, data=ht,
            pch=20,
            xlab="area",
            ylab="log2Price", 
            main="House Price by area\n(Main-Effect Model)")

curve(intercept.dong + slope.area*x, col="aquamarine3", add=TRUE)
curve(intercept.li+ slope.area*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2, 
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))


betas.floor <- coef(lm(logprice~floor+dong, data = ht))

intercept.bc <- betas.floor[1]
slope.floor <- betas.floor[2]
intercept.dong <- betas.floor[1] + betas.floor[3]
intercept.li   <- betas.floor[1]

plot(logprice ~ floor, data=ht,
            pch=20,
            xlab="floor",
            ylab="log2Price", 
            main="House Price by floor\n(Main-Effect Model)")

curve(intercept.dong + slope.floor*x, col="aquamarine3", add=TRUE)
curve(intercept.li+ slope.floor*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2, 
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))

각각 동, 리일 때 year, area, floor의 회귀 계수 값은 일정하다. 따라서 동, 리 직선이 평행하게 나타난다.


1.5 다중회귀분석: Interaction effect model based

이 장에서는 앞서 correlation matrix에서 Dong(동/리 구분 categorical 변수)과 유의수준 0.05 이내에서 유의한 상관성을 보였던 Year 변수 간 interaction 항을 통해 Interaction이 있는지 확인한다.

1.5.1 Estimation formula

\(log\hat{Price} = \beta_0 + \beta_1Year + \beta_2Area + \beta_3Floor + \beta_4Dong + \beta_5Dong^*Year\)

동일 때 \(Dong = 1\) \(log\hat{Price} = \beta_0+\beta_4 + \beta_1+\beta_5Year + \beta_2Area + \beta_3Floor\)

리일 때 \(dong = 0\) \(log\hat{Price} = \beta_0 + \beta_1Year + \beta_2Area + \beta_3Floor\)

설명변수: year area floor, dong 종속변수: price

1.5.2 Scope of Inference

이 회귀 분석의 결과를 더 general 한 범위의 추론에 활용할 수 없다. 변인을 통제한 experiment가 아니라 observation에 대한 사후 분석자료고, 한정된 지역과 시기의 자료기 때문이다.

1.5.3 분석

## 
## Call:
## lm(formula = logprice ~ year + area + floor + dong + dong * year, 
##     data = ht)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.84173 -0.12527 -0.00214  0.14334  0.53148 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.350e+02  4.859e+00 -27.791  < 2e-16 ***
## year         7.416e-02  2.425e-03  30.576  < 2e-16 ***
## area         1.045e-02  5.241e-04  19.937  < 2e-16 ***
## floor        6.701e-03  2.053e-03   3.265 0.001217 ** 
## dong리       3.969e+01  1.055e+01   3.763 0.000200 ***
## year:dong리 -2.000e-02  5.261e-03  -3.803 0.000172 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2173 on 312 degrees of freedom
## Multiple R-squared:  0.8648, Adjusted R-squared:  0.8626 
## F-statistic:   399 on 5 and 312 DF,  p-value: < 2.2e-16

year*dong_num 항(교차항)은 0.05 수준에서 유의한 통계적 상관관계가 존재한다. coefficient \(\beta_0= -135.0\), \(\beta_5= 0.020\) Interaction model은 \(R^2 = 0.8626\)로 86.3%의 설명력을 가져 Main effect model에서보다 조금 더 높은 설명력을 갖는다.

동과 리의 model을 모양대로 따로 회귀 분석을 시행해 나머지 \(\beta\) 값을 구할 수도 있다.

##          b0         b1         b2          b3      b4        b5
## 1 -135.0292 0.07415685 0.01044834 0.006700931 39.6862 -0.020005
##     b0...b4    b1...b5         b2          b3
## 1 -95.34301 0.05415185 0.01044834 0.006700931
##          b0         b1         b2          b3
## 1 -135.0292 0.07415685 0.01044834 0.006700931

1.5.4 회귀 분석 결과

\(log\hat{Price} = -135.029 + 0.074Year + 0.010Area + 0.007Floor + 39.686Dong - 0.020Dong^*Year\)

모든 설명변수는 매우 유의한 p-value 값을 가지며,(유의수준 \(\alpha = 0.05\)) H0은 기각된다. 즉 모든 beta는 0이 아니다.

위의 다중회귀모형은 Adjusted \(R^2\) 역시 .863로, 약 86.3%의 설명력을 갖는다.

더 상세하게 보면, 다른 변수가 통제된 상태에서, Area \(1m^2\) 증가할 때마다, 또 Floor 한 층 높아질 때마다 각각 Price는 약 1.01%, 0.70%의 변화에 정방향으로 영향이 있다.

YearDong 변수와 유의수준 0.05 에서 유의하게 interact하며, 따라서 Year 변수의 계수는 아파트가 동에 위치했느냐, 리에 위치했느냐에 따라 달라진다.

categorical 변수에 따른 sector별 분석도 가능하다. Dong에 따라 각 변수의 coefficient도 다르다.

동일 때 \(Dong = 1\) \(log\hat{Price} = -93.343 + 0.054Year + 0.010Area + 0.007Floor\)

더 상세하게 보면, 다른 변수가 통제된 상태에서, 아파트가 1년 더 최근에 지어졌을수록, Price 약 5.55%의 변화에 정방향으로 영향을 받으며, Area \(1m^2\) 넓어질 때마다, 또 Floor 한 층 높아질 때마다 각각 Price는 약 1.01%, 0.70%의 변화에 정방향으로 영향이 있다.

리일 때 \(dong = 0\) \(log\hat{Price} = -135.029 + 0.007Year + 0.010Area + 0.006Floor\)

\(\beta_0\)는 아파트가 동에 있을 때보다 작아 아파트의 매매가가 리에서 전반적으로 낮음을 알 수 있다.

더 상세하게 보면, 다른 변수가 통제된 상태에서, 아파트가 1년 더 최근에 지어졌을수록, Price 약 0.70%의 변화에 정방향으로 영향을 받으며, Area \(1m^2\) 넓어질 때마다, 또 Floor 한 층 높아질 때마다 각각 Price는 약 1.01%, 0.60%의 변화에 정방향으로 영향이 있다.

두 섹터에서 주목할 부분은 Year의 회귀 계수가 매우 다르다는 점이다. 특히 아파트가 최근에 지어졌는지 여부는 아파트가 동에 있을 때 계수 값이 커지는 것으로 드러났다. 이는 동지역일 경우 최근에 가까워질수록 역 인근 택지나 대형 아파트 단지가 더 지어졌기 때문일 것으로 추정된다.

\(\beta0\)에서도 차이점이 보여, 동지역이 전반적으로 매매가가 더 높았다.

마찬가지로 결론 표현의 영향이 있다, 영향을 받다는 association을 설명하는 것일 뿐, 인과관계의 의미를 내포하지 않는다.

1.5.5 시각화

##   (Intercept)          year        dong리   year:dong리 
## -146.35674569    0.08028525   38.07241574   -0.01917359
slope.year.d <- betas.year[2] + betas.year[4]
slope.year.l <- betas.year[2]
intercept.year.d <- betas.year[1] + betas.year[3]
intercept.year.l <- betas.year[1]

par(mfrow = c(1,3))
plot(logprice ~ year, data=ht,
            pch=20,
            xlab="year",
            ylab="log2Price", 
            main="House Price by year\n(Interaction Model)")

curve(intercept.year.d + slope.year.d*x, col="aquamarine3", add=TRUE)
curve(intercept.year.l + slope.year.l*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2, 
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))

betas.area <- coef(lm(logprice~area+dong+area*dong, data = ht))

slope.area.d <- betas.area[2] + betas.area[4]
slope.area.l <- betas.area[2]
intercept.area.d <- betas.area[1] + betas.area[3]
intercept.area.l   <- betas.area[1]

plot(logprice ~ area, data=ht,
            pch=20,
            xlab="area",
            ylab="log2Price", 
            main="House Price by area\n(Interaction Model)")

curve(intercept.area.d + slope.area.d*x, col="aquamarine3", add=TRUE)
curve(intercept.area.l + slope.area.l*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2, 
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))

betas.floor <- coef(lm(logprice~floor+dong+floor*dong, data = ht))

slope.floor.d <- betas.floor[2] + betas.floor[4]
slope.floor.l <- betas.floor[2]
intercept.floor.d <- betas.floor[1] + betas.floor[3]
intercept.floor.l   <- betas.floor[1]

plot(logprice ~ floor, data=ht,
            pch=20,
            xlab="floor",
            ylab="log2Price", 
            main="House Price by floor\n(Interaction Model)")

curve(intercept.floor.d + slope.floor.d*x, col="aquamarine3", add=TRUE)
curve(intercept.floor.l+ slope.floor.l*x, col="aquamarine4", add=TRUE)

legend("topleft", c("동", "리"), 
                  lty=1, lwd=2,
                  col=c("aquamarine3", "aquamarine4"),
                  text.col=c("aquamarine3", "aquamarine4"))

각각 동, 리일 때 year, area, floor의 회귀 계수 값은 달라진다. 그 중에서 특히 차이가 큰 year, logPrice 의 interaction 항에 대해 다루었고, 그래프를 봤을 때 area, floor 변수에서도 interaction 항을 찾을 여지는 보인다. Main effect model의 시각화에서와 달리동, 리 직선이 평행하게 나타난다.

1.6 회귀분석 가정 검토

1.6.1 회귀분석 가정 검토

1.6.1.1 선형성

앞서 log scale에 따른 상관계수 변화는 크게 없었는데, log scale을 적용하지 않았을 때 선형성은 크게 어긋나며 잔차의 경향성도 나타난다. 선형회귀분석을 위해 price변수에 log scale 적용한다.

1.6.1.2 독립성

독립변수는 각각 독립이어야 한다. 각 독립변수인 건축연도, 건축면적, 층수, 동/읍 여부 간 종속성이 발생할 만한 해당 지역의 사회경제적 배경(법제 등)은 발견할 수 없다.

##     year     area    floor dong_num 
## 1.071106 1.019534 1.038374 1.038475

위 결과를 통해 독립변수간의 다중공선성이 없음을 알 수 있다.

1.6.1.3 (잔차의) 등분산성

## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 10.01159, Df = 1, p = 0.0015556

등분산성이 성립하지 않는다. 표준잔차의 추세선이 수평에 가까울수록 완전한 등분산성을 이룬다고 볼 수 있는데, 차트 중앙부의 표준 잔차가 조금 더 작다. area 변수에도 log scale이 적용했으나 더 개선되지는 않아 area에 log scale 적용할 이유는 없다.

해결을 위해 box-cox transformation을 시도해볼 수 있다.

## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 0.5046364, Df = 1, p = 0.47747

유의수준 0.05에서 등분산성이 해결됨을 알 수 있다. 그러나 변수를 임의로 조정한 것이기 때문에 이 분석에서는 box-cox transformation 데이터를 사용하지는 않았다.

1.6.1.4 (잔차의) 정규성

## 
##  Shapiro-Wilk normality test
## 
## data:  lm_main$residuals
## W = 0.9874, p-value = 0.007233

## 
##  Shapiro-Wilk normality test
## 
## data:  lm_3$residuals
## W = 0.9852, p-value = 0.00236

정규성을 시각적으로 확인한 결과 정규성을 따르는 구간과 따르지 않는 구간이 명확하게 확인 가능하다.

Shapiro test의 귀무가설은 H0: 위 분포가 정규분포와 다르지 않다, 대립가설은 H1: 위 분포는 정규분포와 다르다 이며, 유의수준(0.05)보다 p-value가 작아 귀무가설이 기각된다. 이 표본의 잔차는 여전히 정규성을 따른다고 보기 어렵다. area 변수를 sqrt() 처리해도 여전히 귀무가설이 기각됨을 확인할 수 있다.

1.6.2 가정검토 소결

종속변수에 log2 scale을 적용한 회귀 모델은 선형성과 독립성을 만족하며 등분산성과 정규성을 만족시키지 못한다. 등분산성은 box-cox transformation을 통해 해결할 수 있다.

1.6.3 Influential Point: Outlying Point, Leverage Point

설명변수 계수\(\beta_1\)의 hat value, Cook’s D, DFBETAS, RSTANDARD & RSTUDENT를 통해 확인한다.

원 데이터에서 Outlier and Leverage point로 11, 19, 199, 215 등 4개의 점이 확인된다. 이 중에서도 Deleted Studentized Residual을 확인할 때 11, 19의 영향력이 특히 더 크고, 199, 215는 그와 비슷한 수준의 Deleted 스튜던트 잔차를 가지는 점들이 있다.

조금더 자세히 알아볼 수 있다.

Cook’s Distance까지 포함된 influence.test라는 데이터 프레임을 생성해 Outlier, Leverage 정도가 종합적으로 큰 Influential Point를 구한다.

##     dong     area price floor year dong_num logprice      cooks        hat
## 19    동  15.7838  6800    11 2013        1 12.73132 0.30792675 0.03635433
## 11    동  19.5900  6800     7 2012        1 12.73132 0.26397066 0.03357270
## 215   동 170.4840 24000    13 2001        1 14.55075 0.10939394 0.04942638
## 309   리 197.9000 27500     7 2000        0 14.74714 0.05334149 0.08738695
## 199   리  59.5900  5000     5 1991        0 12.28771 0.05157997 0.04020274
## 175   리  84.8600 22000    17 2015        0 14.42522 0.02875581 0.03577481
##     standardized studentized diffinbeta.year diffinbeta.area
## 19     -6.388360   -6.836428   -0.0012915566    6.652110e-04
## 11     -6.163882   -6.562572   -0.0011722759    6.021558e-04
## 215    -3.243360   -3.293670    0.0006639196   -4.091921e-04
## 309    -1.668928   -1.673693    0.0002691270   -2.690491e-04
## 199    -2.481347   -2.501978    0.0007451075    9.151530e-05
## 175    -1.968559   -1.977634   -0.0004978343    2.963973e-05

내림차순했을 때 Cook’s Distance가 가장 높은 두 점은 아까 Outlier & Leverage Point였던 11, 19번 점으로, 두 아파트 모두 이지역 통상적인 아파트와 비교해 면적이 현저하게 작다는 특징이 있다.(약 4~6평) 아파트명을 검색해본 결과 ‘금촌동 보광그랑베르’ ‘금촌동 그린’ 검색해본 결과 아파트가 아니라 도시형 생활주택이었으며, 이러한 작은 평수가 있고, 아파트 매매가 거래에 포함된 것으로 추정된다.

##     dong    area price floor year dong_num logprice        cooks        hat
## 19    동 15.7838  6800    11 2013        1 12.73132 0.3079267487 0.03635433
## 11    동 19.5900  6800     7 2012        1 12.73132 0.2639706551 0.03357270
## 43    동 39.9900 10000     6 1997        1 13.28771 0.0034849491 0.02258027
## 45    동 39.9900 11000    12 1997        1 13.42522 0.0012378397 0.02290468
## 202   리 43.9200  7700    11 2000        0 12.91064 0.0244545973 0.03378433
## 44    동 49.9700 11800    10 1997        1 13.52650 0.0009656461 0.01806169
##     standardized studentized diffinbeta.year diffinbeta.area
## 19    -6.3883596  -6.8364284   -0.0012915566    6.652110e-04
## 11    -6.1638819  -6.5625723   -0.0011722759    6.021558e-04
## 43    -0.8684787  -0.8681391    0.0001743077    5.151057e-05
## 45    -0.5138348  -0.5132337    0.0001155029    3.066562e-05
## 202   -1.8700131  -1.8774930    0.0001567520    1.212534e-04
## 44    -0.5123384  -0.5117377    0.0001137176    2.315097e-05

다음으로는 Hat value를 통해 Leverage Point를 확인했다. 기울기의 분산이나 \(R^2\) 등에 영향을 미친다.

##     dong    area price floor year dong_num logprice       cooks        hat
## 310   리 197.900 32000    11 2000        0 14.96578 0.015828607 0.08772620
## 309   리 197.900 27500     7 2000        0 14.74714 0.053341493 0.08738695
## 215   동 170.484 24000    13 2001        1 14.55075 0.109393939 0.04942638
## 149   동 158.158 32000     1 2001        1 14.96578 0.003675971 0.04420528
## 199   리  59.590  5000     5 1991        0 12.28771 0.051579969 0.04020274
## 234   동 155.166 62500    21 2009        1 15.93157 0.002679625 0.03884859
##     standardized studentized diffinbeta.year diffinbeta.area
## 310   -0.9072026  -0.9069470    1.613725e-04   -1.460534e-04
## 309   -1.6689281  -1.6736930    2.691270e-04   -2.690491e-04
## 215   -3.2433596  -3.2936702    6.639196e-04   -4.091921e-04
## 149   -0.6304001  -0.6297961    9.351836e-05   -6.854610e-05
## 199   -2.4813469  -2.5019780    7.451075e-04    9.151530e-05
## 234    0.5757452   0.5751333   -1.238918e-05    5.658245e-05

위의 차트와 일치하는 결과를 얻을 수 있다.

1.6.4 소결

Rstandard, Rstudentized 그리고 Hat Value 등 다양한 방법을 통해 동일한 Outlier Point와 Leverage Point를 확인하고 Cook’s Distance를 통해 influential Point를 알아봤고, 공통적으로 11, 19번째 샘플을 결과에서 찾을 수 있다. 다른 아파트 매매가와 같은 선상에서 비교하기 어려운 샘플임 역시 확인했다.

1.6.5 Interval estimation

2.5 % 97.5 %
(Intercept) -135.7844488 -118.3899633
year 0.0656435 0.0743399
area 0.0093583 0.0114640
floor 0.0030854 0.0113173
dong_num 0.3444721 0.4826775

1.7 최종결과 및 비교

Multiple Regression on Price w/ and w/o Interaction
Dependent variable:
logprice
Main effect Interaction
(1) (2)
year 0.070*** 0.074***
(0.002) (0.002)
area 0.010*** 0.010***
(0.001) (0.001)
floor 0.007*** 0.007***
(0.002) (0.002)
dong리 -0.414*** 39.686***
(0.035) (10.545)
year:dong리 -0.020***
(0.005)
Constant -126.674*** -135.029***
(4.426) (4.859)
Observations 318 318
R2 0.859 0.865
Adjusted R2 0.857 0.863
Residual Std. Error 0.222 (df = 313) 0.217 (df = 312)
F Statistic 474.760*** (df = 4; 313) 399.032*** (df = 5; 312)
Note: p<0.1; p<0.05; p<0.01



2 국회의원 출석률과 결석률은 무엇으로 설명할 수 있을까?

“진보, 보수의 텃밭지역 의원들은 일을 하지 않는다.”, “젊은 초선 의원들이 일을 잘한다.”와 같은 소리를 들어본 적이 있을 것이다. 과연 이러한 말이 사실인지 평가해보고자 한다.

의원들의 출석률에 관한 자료는 참여연대에서, 의원들의 정보에 관한 자료는 https://dgreen.tistory.com/129 에서 받아서 활용하였다.

2.2 전처리

#필요 데이터 선택
비례 <- dplyr::select(비례, -성별, -연령, -주소)
지역구 <- dplyr::select(지역구, -성별, -연령, -주소)

#열 이름 바꾸기
names(Council2020) <- c("의원", "정당", "선거구", "선수", "본회의수", "출석", "출장", "청가", "무단결석")
names(지역구) <- c("의원", "생년월일", "직업", "재산", "득표율")
names(비례) <- c("의원", "생년월일", "직업", "재산")

#출석률, 결석률 변수 생성 및 지역구, 정당 더미변수 생성
Council2020 <- Council2020 %>%
  mutate(출석률 = 출석/본회의수 * 100, 결석률 = 무단결석/본회의수 *100) %>%
  mutate(수도권 = grepl("^서울", Council2020$선거구)|grepl("^인천", Council2020$선거구)| grepl("^경기", Council2020$선거구)) %>%
  mutate(충청권 = grepl("^대전", Council2020$선거구)|grepl("^충남", Council2020$선거구)|grepl("^충북", Council2020$선거구)|grepl("^세종", Council2020$선거구)) %>%
  mutate(TK = grepl("^대구", Council2020$선거구)|grepl("^경북", Council2020$선거구)) %>%
  mutate(PK = grepl("^울산", Council2020$선거구)|grepl("^부산", Council2020$선거구)|grepl("^경남", Council2020$선거구)) %>%
  mutate(호남권 = grepl("^광주", Council2020$선거구)|grepl("^전북", Council2020$선거구)|grepl("^전남", Council2020$선거구)) %>%
  mutate(강원 = grepl("^강원", Council2020$선거구)) %>%
  mutate(제주 = grepl("^제주", Council2020$선거구)) %>%
  mutate(비례 = grepl("^비례", Council2020$선거구)) %>%
  mutate(민주 = grepl("^더불", Council2020$정당)|grepl("^열린", Council2020$정당)) %>%
  mutate(통합 = grepl("^미래", Council2020$정당)) %>%
  mutate(민생국민 = grepl("^국민", Council2020$정당)|grepl("^민생", Council2020$정당)) %>%
  mutate(민중정의 = grepl("^정의", Council2020$정당)|grepl("^민중", Council2020$정당)) %>%
  mutate(친박자유 =grepl("^친박", Council2020$정당)|grepl("^자유", Council2020$정당)) %>%
  mutate(무소속 =grepl("^무소", Council2020$정당))

#선수를 연속형 숫자변수로 변형
Council2020$선수 <- gsub("선", "", Council2020$선수)
Council2020$선수<- as.numeric(Council2020$선수)

#의원 정보에서 한자이름 삭제
지역구 <- 지역구 %>% 
  separate(의원, into = c("의원", "한자"), sep = "\\(") %>%
  dplyr::select(-한자)

비례 <- 비례 %>% 
  separate(의원, into = c("의원", "한자"), sep = "\\(") %>%
  dplyr::select(-한자)

#의원 정보에서 나이 구하기
비례 <-  비례 %>%
  separate(생년월일, into=c("연도", "그외"), sep = "\\/") %>%
  dplyr::select(-그외) %>%
  mutate(나이 = 2020 - as.numeric(연도) + 1) %>%
  dplyr::select(-연도)


지역구 <-  지역구 %>%
  separate(생년월일, into=c("연도", "그외"), sep = "-") %>%
  dplyr::select(-그외) %>%
  mutate(나이 = 2020 - as.numeric(연도) + 1) %>%
  dplyr::select(-연도)

#재산을 연속형 숫자변수로 변형
지역구$재산 <- gsub(",", "", 지역구$재산)
지역구$재산 <- as.numeric(지역구$재산)
비례$재산 <- gsub(",", "", 비례$재산)
비례$재산 <- as.numeric(비례$재산)

#비례대표 득표율 NA / 득표율 numeric
비례$득표율 <- NA
지역구$득표율 <- gsub("%", "", 지역구$득표율)
지역구$득표율 <- as.numeric(지역구$득표율)


#의원정보와 개인정보 합치기
개인정보 <- rbind(지역구, 비례)

data <- left_join(Council2020, 개인정보, by = "의원")

#지역, 정당 하나의 변수로 묶기
data <- data %>%
  gather(key ="지역", value="지역2", 12:19) %>%
  filter(지역2 ==  T) %>%
  dplyr::select(-지역2)
  
data <- data %>% 
  gather(key = "당적", value="당적2", 12:17 ) %>%
  filter(당적2 == T) %>%
  dplyr::select(-당적2) 

data비례 <- data %>% filter(지역 == "비례")
data <- data %>% filter(지역 != "비례")

2.3 분석

2.3.1 Correlation

## bcPower Transformation to Normality 
##             Est Power Rounded Pwr Wald Lwr Bnd Wald Upr Bnd
## data$출석률    4.2976         4.3       3.0822       5.5131
## 
## Likelihood ratio test that transformation parameter is equal to 0
##  (log transformation)
##                            LRT df       pval
## LR test, lambda = (0) 68.08879  1 < 2.22e-16
## 
## Likelihood ratio test that no transformation is needed
##                            LRT df       pval
## LR test, lambda = (1) 36.38922  1 1.6159e-09
  • 출석률(y1)은 오른쪽으로 치우쳐있고, 결석률(y2)는 왼쪽으로 치우친 형태
  • 선수(x1)은 왼쪽으로 치우친 형태, 나이(x2)와 득표율(x3)은 정규분포와 유사해보임.
  • 선수와 출석률은 음(-)의 상관관계, 선수와 결석률은 양(-)의 상관관계를 보인다.
  • 나이도 선수와 유사하게 결석률, 출석률과 상관관계를 보이며, 나이와 선수는 높은 상관관계가 있다. 추후, 다중공선성 문제가 발생할 수 있다.
  • 득표율과 출석률은 음(-)의 상관관계, 득표율과 결석률은 양(+)의 상관관계를 보인다.
  • 선수는 득표율에 따른 출석률에 영향을 미치는 것으로 보인다. 따라서 선수와 득표율의 interaction term을 살펴볼 필요가 있다.

2.3.2 더미변수 분석

당적 및 지역

당적과 지역에 따른 출석률

  • 출석률은 참석 수/전체 본회의 수, 결석률은 무단 결석 수/전체 본회의 수이다.
  • 출석률은 얼마나 본회의에 참가했는지를 보여주고, 결석률은 얼마나 본회의에 타당한 이유 없이 불참했는지를 보여준다.
  • 당적에 따라서 보면 친박신당과 자유공화당 의원들은 다른 당과 아주 큰 차이로 출석률이 낮고 결석률이 높다.
  • 민주당은 가장 출석률이 높고, 결석률이 낮은 정당이다.
  • 지역별로 보면, 호남과 영남, 강원지역의 출석률이 다른 지역에 비해 낮은 편이고, 결석률은 TK지역이 상대적으로 높은 편이다.
  • 양대 정당에서 outlier로 출석률이 낮은 의원들은 중진의원들이 많았고, 민주당에서 outlier로 결석률이 높은 의원들은 내각에 참여중인 의원이 많았고, 통합당에서는 원내대표, 당대표 등을 한 의원들이 높은 결석률을 보여주었다.

20대 총선은 민주당의 텃밭이었던 호남권에서 다수의 국민의당 당선자가 나왔고, 영남권에서 상당한 민주당 후보 당선자가 나왔다. 따라서, 지역과 정당이 1:1 매칭되기 보다는, 각 정당의 국회의원들이 지역별로 분산되어 있다. 상대적으로 대구와 경북 지역은 경쟁이 적었다.

정치적 텃밭이 아닌 곳에서 치열한 경쟁을 통해 당선된 국회의원들은 차기 정치적 승리를 위해 더 열심히 활동할 것이라는 가설을 세우면, 단순히 지역과 당적으로 나눠볼 것이 아니라, 어떤 지역에서 어떤 당적으로 당선되었는지가 국회 활동에 다른 영향을 줄 것이라고 생각해볼 수 있다.

수도권과 호남권

수도권 민주당 당선자와 호남권 민주당 당선자 비교

  • 상대적으로 낮은 득표율로 당선된 수도권 민주당 의원들은 상대적으로 높은 득표율로 당선된 호남권 민주당 의원들보다 출석률이 높다.

수도권과 영남권

영남권 통합당 당선자와 수도권 통합당 당선자 비교

  • 상대적으로 낮은 득표율로 당선된 수도권 통합당 의원들은 상대적으로 높은 득표율로 당선된 대구경북권 통합당 의원들보다 출석률이 높다.

이처럼, 선거에서의 경쟁이 출석률에 영향을 미친다는 가설은 각 정당의 정치적 기반을 고려해서 설명할 수도 있다. 한편, 20대 국회의 3/4 기간 동안 야당이었던 미래통합당, 미래한국당 소속의 의원들과 그동안 여당이었던 민주당 소속 의원들은 득표율에 따라 다른 출석률을 보일 수 있다.

2.3.3 model

단순 회귀 모형

## 
## Call:
## lm(formula = 출석률 ~ 득표율, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -33.817  -4.409   0.814   5.439  13.549 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 102.46521    3.27570  31.280  < 2e-16 ***
## 득표율       -0.28170    0.06618  -4.257 3.01e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.749 on 233 degrees of freedom
##   (18 observations deleted due to missingness)
## Multiple R-squared:  0.07216,    Adjusted R-squared:  0.06818 
## F-statistic: 18.12 on 1 and 233 DF,  p-value: 3.006e-05
  • 득표율이 1%p 증가할 때, 출석률이 0.2817%p 감소한다.

다중 회귀 모형 (1)

초선, 재선의원들은 더 출석을 잘하는가? 의원 선수는 득표율에 따른 출석률에 영향을 미치는가?

## 
## Call:
## lm(formula = 출석률 ~ 득표율 + 득표율 * 초선재선, data = dataformodel2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -29.5348  -4.6590   0.9139   5.5247  17.4039 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         104.0745     5.1976  20.024  < 2e-16 ***
## 득표율               -0.3707     0.1024  -3.619 0.000363 ***
## 초선재선TRUE         -5.6313     6.5333  -0.862 0.389610    
## 득표율:초선재선TRUE   0.2101     0.1308   1.607 0.109458    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.39 on 231 degrees of freedom
##   (18 observations deleted due to missingness)
## Multiple R-squared:  0.1633, Adjusted R-squared:  0.1524 
## F-statistic: 15.02 on 3 and 231 DF,  p-value: 5.751e-09
  • 선수는 의외로 출석률의 원인이라고 할 수 없다.
  • 한편, 득표율에 따른 출석률에 미치는 효과에 초선, 재선이라는 사실이 미치는 효과도 유의하지 않다.
  • 선수를 통제했을 때, 득표율에 따른 출석률 감소효과는 더 커진다. 득표율이 1%p 증가할 때, 출석률이 0.3707%p 감소한다.

다중 회귀 모형 (2)

미래통합당은 민주당보다 출석을 잘 하지 않는가?

## 
## Call:
## lm(formula = 출석률^4 ~ 득표율 + 득표율 * 초선재선 + 통합 + 민주 + 
##     민생 + 정의 + 친박자유, data = dataformodel3)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -55269455 -10554123   1095486  11231152  45151115 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          74051423   12157131   6.091 4.77e-09 ***
## 득표율                -507993     228303  -2.225  0.02706 *  
## 초선재선TRUE         -3215007   14414144  -0.223  0.82370    
## 통합TRUE              1810600    4992832   0.363  0.71721    
## 민주TRUE             20332174    4955377   4.103 5.69e-05 ***
## 민생TRUE              3259652    6359310   0.513  0.60875    
## 정의TRUE             -6879521   12471886  -0.552  0.58177    
## 친박자유TRUE        -31550514   10645769  -2.964  0.00337 ** 
## 득표율:초선재선TRUE    265286     288716   0.919  0.35915    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16250000 on 226 degrees of freedom
##   (18 observations deleted due to missingness)
## Multiple R-squared:  0.3932, Adjusted R-squared:  0.3717 
## F-statistic: 18.31 on 8 and 226 DF,  p-value: < 2.2e-16
  • 잔차의 정규성을 위해 출석률에 네제곱을 해줬다. 이로 인해, 해석이 어려워지는 문제가 있다.
  • 득표율이 증가하면, 출석률이 낮아짐과 민주당은 무소속에 비해 높은 참석률을, 친박신당과 자유공화당은 낮은 출석률을 가짐은 확인할 수 있다.

2.4 회귀분석 가정 검토

2.4.1 Multicollinearity

x
득표율 2.706277
초선재선 43.873123
통합 5.377268
민주 5.410856
민생 2.150556
정의 1.168065
친박자유 1.271102
득표율:초선재선 43.343014
  • 초선재선항과 초선재선*득표율 항의 vif가 높은 것은 interaction term이기 때문이며, 당적 더미 변수의 vif가 높은 것은 더미 변수이기 때문이다.

2.4.3 normal distribution assumption

## 
##  Shapiro-Wilk normality test
## 
## data:  resid(model3)
## W = 0.97978, p-value = 0.00194
  • Q-Q plot을 보면 조금씩 잔차의 분포가 정규분포에서 떨어진 모습을 보인다. 즉 정규성 가정을 위배한다.
  • y변수를 네제곱해줬음에도, shapiro-wilk test를 통과하지 못했다.
  • 이점이 가장 어려운 문제이다.

2.4.4 Homoscedasticity Assumption

  • 등분산성 가정을 만족한다.
## 
##  studentized Breusch-Pagan test
## 
## data:  model3
## BP = 13.562, df = 8, p-value = 0.09393
  • Breusch-Pagan test에서 귀무가설이 기각되지 않아, 등분산 가정을 만족하는 것으로 한다.

2.4.5 Outlier & leverage

  • cook’s distance가 큰 96번, 244번, 246번은 각각 민주당 김부겸 의원, 국회의장을 맡은 민주당 출신 문희상 의원, 국민의당 출신 무소속 김경진 의원이다.
hat standardized studentized cooks
244 0.0984699 2.926313 2.976772 0.1039256
246 0.1493019 -1.676980 -1.683774 0.0548407
96 0.0502066 -2.283690 -2.305387 0.0306312
47 0.0457897 2.001841 2.015355 0.0213668
168 0.1420679 -1.068987 -1.069327 0.0210255
118 0.0312814 -2.388715 -2.414094 0.0204727
hat standardized studentized cooks
244 0.0984699 2.926313 2.976772 0.1039256
47 0.0457897 2.001841 2.015355 0.0213668
151 0.0209717 1.916827 1.928321 0.0087450
58 0.0236822 1.735518 1.743330 0.0081180
212 0.0338879 1.694646 1.701740 0.0111926
76 0.0187681 1.677436 1.684239 0.0059799
hat standardized studentized cooks
244 0.0984699 2.926313 2.976772 0.1039256
47 0.0457897 2.001841 2.015355 0.0213668
151 0.0209717 1.916827 1.928321 0.0087450
58 0.0236822 1.735518 1.743330 0.0081180
212 0.0338879 1.694646 1.701740 0.0111926
76 0.0187681 1.677436 1.684239 0.0059799
hat standardized studentized cooks
235 0.5085462 -0.1405137 -0.1402086 0.0022701
236 0.5085462 0.1405137 0.1402086 0.0022701
241 0.3660102 -0.2026277 -0.2021973 0.0026337
240 0.3609723 0.3243542 0.3237112 0.0066031
239 0.3335441 -0.1199790 -0.1197170 0.0008005
246 0.1493019 -1.6769799 -1.6837745 0.0548407
  • cook’s distance: 문희상 > 김경진 > 김부겸

  • studentized residual: 문희상 > 정성호 > 이종구

  • standardized residual: 문희상 > 정성호 > 이종구

  • hat: 심상정 > 김종훈 > 조원진

  • 문희상 의원은 국회의장이기 때문에 출석률이 매우 높기 때문에 outlier로 나타난다.

## 
##  Shapiro-Wilk normality test
## 
## data:  resid(model4)
## W = 0.97168, p-value = 0.000126
  • 문희상 의원을 제거해도 여전히 정규성을 만족하지 못한다.
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
##    rstudent unadjusted p-value Bonferroni p
## 7 -3.511555         0.00053819      0.12648
  • 본페로니 outlier 테스트에서 outlier는 나타나지 않았다.

2.4.6 interval estimation

모델 3의 회귀계수 신뢰구간 추정

2.5 % 97.5 %
(Intercept) 50095598.2 98007247.46
득표율 -957867.7 -58117.88
초선재선TRUE -31618311.5 25188297.51
통합TRUE -8027856.6 11649056.76
민주TRUE 10567523.2 30096824.64
민생TRUE -9271470.6 15790774.78
정의TRUE -31455575.6 17696533.74
친박자유TRUE -52528174.3 -10572852.73
득표율:초선재선TRUE -303633.4 834205.93

2.5 결론

  • 더 치열하게 경쟁한 지역구에서 당선된 의원들은 더 높은 출석률을 보인다는 가설을 입증하였다.
  • 민주당이 출석률이 높기 때문에 민주당 의원들이 더 열심히 일한다고 할 수 있는가? 그럴 수도 있으나, 야당 의원들은 정부나 여당이 제출한 법안에 반대할 때, 이를 보이콧하는 수단으로 본회의 불참을 선언하기도 한다. 따라서, 민주당 소속 의원들이 더 열심히 일한다고 하기에는 무리가 있다.